package com.jyw.business.ins.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jyw.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 巡检计划对象 ins_plan
 *
 * @author zhangcheng
 * @date 2023-09-28
 */
@Data
@TableName("ins_plan")
@ApiModel("巡检计划实体")
public class InsPlan {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 业务ID （巡检资产 巡检单元）
     */
    @ApiModelProperty("业务ID （巡检资产 巡检单元）")
    @Excel(name = "业务ID ", readConverterExp = "巡检资产,巡检单元")
    private Long businessId;

    /**
     * 计划类型（1巡检资产 2巡检单元）
     */
    @ApiModelProperty("计划类型（1巡检资产 2巡检单元）")
    @Excel(name = "计划类型", readConverterExp = "1=巡检资产,2=巡检单元")
    private Integer businessType;

    /**
     * 生效类型（1立即生效 2指定日期）
     */
    @ApiModelProperty("生效类型（1立即生效 2指定日期）")
    @Excel(name = "生效类型", readConverterExp = "1=立即生效,2=指定日期")
    private Integer effectiveType;

    /**
     * 生效开始日期
     */
    @ApiModelProperty("生效开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate effectiveStartDate;

    /**
     * 生效结束日期
     */
    @ApiModelProperty("生效结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate effectiveEndDate;

    /**
     * 巡检责任人ID
     */
    @ApiModelProperty("巡检责任人ID")
    @Excel(name = "巡检责任人ID")
    private Long inspectUserId;

    /**
     * 是否上传图片
     */
    @ApiModelProperty("是否上传图片")
    @Excel(name = "是否上传图片")
    private Boolean uploadPhoto;

    /**
     * 限期整改（1是 0否）
     */
    @ApiModelProperty("限期整改（1是 0否）")
    @Excel(name = "限期整改", readConverterExp = "1=是,0=否")
    private Boolean deadlineRectify;

    /**
     * 转工单（1是 0否）
     */
    @ApiModelProperty("转工单（1是 0否）")
    @Excel(name = "转工单", readConverterExp = "1=是,0=否")
    private Boolean workOrder;

    /**
     * 是否启用（1是 0否）
     */
    @ApiModelProperty("是否启用（1是 0否）")
    @Excel(name = "是否启用", readConverterExp = "1=是,0=否")
    private Boolean isEnable;

    /**
     * 巡检周期（1每天 2每周 3每月 4每季度 5每半年 6每年）
     */
    @ApiModelProperty("巡检周期（1每天 2每周 3每月 4每季度 5每半年 6每年）")
    @Excel(name = "巡检周期", readConverterExp = "1=每天,2=每周,3=每月,4=每季度,5=每半年,6=每年")
    private Integer inspectionCycle;

    /**
     * 巡检次数
     */
    @ApiModelProperty("巡检次数")
    @Excel(name = "巡检次数")
    private Integer inspectionNum;

    /**
     * 每周多选（逗号分隔开 0不限制 1-7）
     */
    @ApiModelProperty("每周多选（逗号分隔开 0不限制 1-7）")
    @Excel(name = "每周多选", readConverterExp = "逗=号分隔开,0=不限制,1=-7")
    private String weekly;

    /**
     * 每月多选（逗号分隔开 0不限制 1-31）
     */
    @ApiModelProperty("每月多选（逗号分隔开 0不限制 1-31）")
    @Excel(name = "每月多选", readConverterExp = "逗=号分隔开,0=不限制,1=-31")
    private String monthly;

    /**
     * 到期宽限天
     */
    @ApiModelProperty("到期宽限天")
    @Excel(name = "到期宽限天")
    private Integer graceDay;

    /**
     * 是否固定时间
     */
    @ApiModelProperty("是否固定时间")
    @Excel(name = "是否固定时间")
    private Boolean isFixedTime;

    /**
     * 跳过节假日（1是 0否）
     */
    @ApiModelProperty("跳过节假日（1是 0否）")
    @Excel(name = "跳过节假日", readConverterExp = "1=是,0=否")
    private Boolean skipHoliday;

    /**
     * 跳过周末（1是 0否）
     */
    @ApiModelProperty("跳过周末（1是 0否）")
    @Excel(name = "跳过周末", readConverterExp = "1=是,0=否")
    private Boolean skipWeekend;

    /**
     * 处理规则（1直接跳过 2次日处理）
     */
    @ApiModelProperty("处理规则（1直接跳过 2次日处理）")
    @Excel(name = "处理规则", readConverterExp = "1=直接跳过,2=次日处理")
    private Integer processingRule;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private LocalDateTime updateTime;

}
